package my.senix.classics;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 古典问题：有一对兔子，从出生后第3个月起每个月都生一对兔子，小兔
 * 子长到第四个月后每个月又生一对兔子，假如兔子都不死，问每个月的兔子总数为多少？
 * <p>
 * Created by lhs on 2018/11/7.
 */
public class RabbitBirth {

    /**
     * 要点：新生出来的一对兔子，必须隔一个月，长大后再生
     * 就是一个斐波拉切数列
     */

    public static void main(String[] args) {

        try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {

            String str;
            while (true) {
                str = reader.readLine();

                if (str == null || str.equalsIgnoreCase("-1")) {
                    break;
                }

                Integer months = Integer.valueOf(str);

                String template = "前%d月，一共产生%d只兔子";
                System.out.println(String.format(template, months, f(months)));
            }


        } catch (IOException e) {
            e.printStackTrace();
        }


    }

    private static int f(int months) {

        if (months == 1) {
            return 1;
        }

        if (months == 2) {
            return 1;
        }

        return f(months-1)+f(months-2);

    }
}
